This invention relates to methods for fitting logic functions in an integrated circuit. More specifically, the invention relates to performing the fitting function using heterogeneous logic elements.
During the design phase of a new electronic product (e.g., an integrated circuit), logic functions must be designed, tested, and ultimately laid-out on a substrate (e.g., silicon or other semiconductor). The layout component of this process typically involves mapping hardware independent logic cells onto elementary units of hardware to form logic elements. Subsequent steps involve placement of these logic elements onto specified locations on the substrate and routing lines between the various logic blocks on the substrate. These functions are generically referred to as "place and route."
In some electronic products--notably some programmable logic devices--the layout of logic on the substrate assumes a hierarchy. In this hierarchy, fundamental units of logic may be referred to as logic cells or logic elements. These logic cells may be grouped into larger blocks of logic that may be referred to as "logic array blocks" for example. These blocks of logic may, in turn, be grouped into rows and ultimately columns on the hardware device.
Modern tools for designing electronic products are implemented as software. This software may allow the designer to specify the desired functioning of the end device, as well as some architectural and logic constraints. The software tools can take this information and, with the designer's aid, develop Boolean, schematic, and ultimately hardware designs. In the design process, the software fits the logic onto the hardware device to provide the final design layout.
Typically the design software "compiles" a design to produce a hardware layout. Compilation takes as an input a user's specifications (including high and low level logic constraints, timing requirements, etc.) and then synthesizes that design maps it onto elementary units of hardware, and fits it onto a target hardware device. In the case of programmable devices, the resulting compiled electronic design is then used to program a blank (unprogrammed) device. Designs for application specific integrated circuits, including programmable logic devices (PLDs) and field programmable gate arrays, as well as non-programmable electronic devices such as gate arrays all may require compilation involving synthesis of logic functions and fitting.
Normally, during PLD compilation, a user's design requirements are first synthesized to generate the gates and nets necessary to implement the design. The synthesized design is then "mapped" to a particular target hardware device. The target hardware device will have elementary units of hardware on which logic is implemented. The PLD into which the synthesized design is being mapped is typically homogeneous in that the PLD contains a single type of elementary logic unit. Such elementary logic units can include look up table (LUT) type logic devices as well as product term type (PTERM) logic devices. In the case of look-up table devices, the elementary unit may be a logic element that includes a four input look-up table together with a register. In the case of a product term device, the fundamental hardware unit is a product term or product term cell. One example of the homogeneous type PLD architecture is illustrated by the FLEX PLD architecture manufactured by the Altera Corporation of San Jose, Calif. having logic elements in the form of look up tables (LUT). However, the RAPHAEL programmable logic device also developed by the Altera Corporation contains a heterogeneous environment. In that environment, logic may be mapped to look up tables and product terms on a target hardware device In the case of the RAPHAEL architecture, speed and size considerations militate in favor of PTERM logic elements over LUT type logic cells. However, since there are typically more LUT type logic elements than PTERM logic elements, the mapping must be carried out with the view to optimize the use of the PTERM logic elements. After the logic has been mapped into PTERM and LUT logic elements, the resulting elements are fit onto the hardware device by a place and route procedure.
The mapping process is dependent upon the particular hardware architecture employed and mapping to look up table architectures is fundamentally different than mapping to product term architectures. For this reason, it is desirable to find methods and mechanisms for use in mapping heterogeneous logic elements in a programmable logic device.